home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / Ant Movie Catalog 3.5.0.2 / amc_install.exe / {app} / Scripts / Yahoo Cinema (IT).ifs < prev    next >
Text File  |  2005-02-03  |  8KB  |  295 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=(c) 2004 Stefano Mora   stefano.mora@libero.it * (c) 2003 Andrea Cristaudo achris@tiscalinet.it
  8. Title=Yahoo!Cinema
  9. Description=Get movie info from yahoo.it
  10. Site=http://it.movies.yahoo.com
  11. Language=IT
  12. Version=1.0.1 - 02.02.2005
  13. Requires=3.5.0
  14. Comments=**Changes**|Dino Librandi dinolib@libero.it: adapted to v.3.5.0
  15. License=This program is free software; you can|redistribute it and/or modify it under the|terms of the GNU General Public License as|published by the Free Software Foundation;|either version 2 of the License, or (at your|option) any later version.
  16. GetInfo=1
  17.  
  18. ***************************************************)
  19.  
  20. program YahooCinema;
  21. var
  22.   MovieName: string;
  23.   TheMovieAddress: string;
  24.  
  25. const
  26.   PATHLOG = 'c:\Programmi\Ant Movie Catalog\Log\LogYahoo\';
  27.   
  28. // ---
  29.   
  30. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  31. var
  32. i: Integer;
  33. begin
  34. result := -1;
  35. if StartAt < 0 then
  36.   StartAt := 0;
  37. for i := StartAt to List.Count-1 do
  38.   if Pos(Pattern, List.GetString(i)) <> 0 then
  39.   begin
  40.    result := i;
  41.    Break;
  42.   end;
  43. end;
  44.  
  45. // ---
  46.  
  47. procedure AnalyzePage(Address: string);
  48. var
  49. Page: TStringList;
  50. LineNr: integer;
  51. BeginPos: integer;
  52.  
  53. begin
  54. Page := TStringList.Create;
  55.  
  56. Page.Text := GetPage(Address);
  57. //Page.LoadFromFile('c:\Programmi\Ant Movie Catalog\LogYahoo\il quinto elemento.film');  // Debug
  58. //Page.SavetoFile(PATHLOG+MovieName+'.res');
  59.  
  60. LineNr := FindLine('Non abbiamo trovato nessun risultato', Page, 0);
  61. if LineNr<>-1 then
  62.   begin
  63.   ShowMessage('Film non trovato');
  64.   exit;
  65.   end;
  66.  
  67.  
  68. LineNr := FindLine('<font face=arial,helvetica size=+1><b>Risultati ricerca</b></font>', Page, 0);
  69. if LineNr = -1 then
  70.   begin   // Trovato il film
  71.   SetField(fieldURL, Address);
  72.   AnalyzeMoviePage(Page);
  73.  
  74.   //Debug
  75.   //Page.SaveToFile('c:\Programmi\Ant Movie Catalog\LogYahoo\'+MovieName+'.film');
  76.   end
  77. else
  78.   begin   // Crea una lista di risultati
  79.   PickTreeClear;
  80.   AddMoviesTitles(Page);
  81.   if TheMovieAddress='' then
  82.     begin
  83.     if PickTreeExec(Address) then
  84.       begin
  85.       SetField(fieldURL, Address);
  86.       Page.Text := GetPage(Address);
  87.     
  88.       //Debug
  89.       // Page.SaveToFile('c:\Programmi\Ant Movie Catalog\LogYahoo\'+MovieName+'.film2');
  90.     
  91.       AnalyzeMoviePage(Page);
  92.       end;
  93.     end
  94.   else
  95.     begin
  96.     SetField(fieldURL, TheMovieAddress);
  97.     Page.Text := GetPage(TheMovieAddress);
  98.     AnalyzeMoviePage(Page);
  99.     //Debug
  100.     // Page.SaveToFile('c:\Programmi\Ant Movie Catalog\LogYahoo\'+MovieName+'.film3');
  101.     end;
  102.   end;
  103. Page.Free;
  104. end;
  105.  
  106. // ---
  107.  
  108. procedure AnalyzeMoviePage(Page: TStringList);
  109. var
  110.   Fine: Integer;
  111.   Line: string;
  112.   LineNr: Integer;
  113.   BeginPos, EndPos: Integer;
  114.   Field: integer;
  115.   strTmp: string;
  116.   
  117. begin
  118. Fine := 0;
  119.  
  120. // Cerca il tag che identifica il titolo del film
  121. LineNr := FindLine('<td><font face=arial size=+1 color="#333366"><b>', Page, 0);
  122. if LineNr > -1 then
  123. begin
  124.   //Translated Title + Year
  125.   Line := Page.GetString(LineNr);
  126.   HTMLRemoveTags(Line);
  127.  
  128.   strTmp := copy(Line, 1, pos(' (', Line));
  129.   SetField(fieldTranslatedTitle, strTmp);
  130.   SetField(fieldOriginalTitle, strTmp);
  131.   // Setta lo stesso titolo: se l'originale sarα diverso, lo modificherα poi
  132.  
  133.   // Ricava l'anno tra le parentesi
  134.   Delete(Line, 1, pos(' (', Line) + 1);
  135.   Delete(Line, pos(')', Line), pos(')', Line) + 1);
  136.   SetField(fieldYear, Line);
  137.  
  138.   // Cerca il genere
  139.   LineNr := FindLine('Genere:', Page, LineNr);
  140.   if LineNr <> -1 then
  141.     begin
  142.     Line := Page.GetString(LineNr);
  143.     BeginPos := pos('</b>', Line)+4;
  144.     EndPos := pos('<br>', Line);
  145.     SetField(fieldCategory, copy(Line, BeginPos, EndPos-BeginPos));
  146.     end
  147.  
  148.   // Durata + origine
  149.   LineNr := FindLine('Durata', Page, LineNr);
  150.   if LineNr <> -1 then
  151.     begin
  152.     Line := Page.GetString(LineNr);
  153.     BeginPos := pos('</b>', Line)+4;
  154.     EndPos := pos('<b> -', Line);
  155.     strTmp := copy(Line, BeginPos, EndPos-BeginPos);
  156.     SetField(fieldLength, strTmp);
  157.  
  158.     BeginPos := pos('ne: </b>', Line)+8;
  159.     EndPos := pos('<p>', Line);
  160.     SetField(fieldCountry, copy(Line, BeginPos, EndPos-BeginPos));
  161.     end
  162.  
  163.   // Descrizione
  164.   LineNr := FindLine('</table>', Page, LineNr);
  165.   Line := Page.GetString(LineNr+2);
  166.   // ShowMessage(Line);
  167.   SetField(fieldDescription, Line);
  168.  
  169.   // Titolo originale
  170.   LineNr := FindLine('Titolo Originale:', Page, LineNr);
  171.   if LineNr <> -1 then
  172.     begin
  173.     Line := Page.GetString(LineNr);
  174.     BeginPos := pos('</b>', Line)+4;
  175.     EndPos := pos('<br>', Line);
  176.     SetField(fieldOriginalTitle, copy(Line, BeginPos, EndPos-BeginPos));
  177.     end
  178.  
  179.   // Regia
  180.   LineNr := FindLine('Regia:', Page, LineNr);
  181.   if LineNr <> -1 then
  182.     begin
  183.     Line := Page.GetString(LineNr+1);
  184.     HTMLRemoveTags(Line);
  185.     SetField(fieldDirector, Line);
  186.     end
  187.  
  188.   // Attori
  189.   LineNr := FindLine('Attori:', Page, LineNr);
  190.   if LineNr <> -1 then
  191.     begin
  192.     Line := Page.GetString(LineNr+1);
  193.     HTMLRemoveTags(Line);
  194.     SetField(fieldActors, Line);
  195.     end
  196.  
  197.   // Prodotto
  198.   LineNr := FindLine('Prodotto da:', Page, LineNr);
  199.   if LineNr <> -1 then
  200.     begin
  201.     Line := Page.GetString(LineNr+1);
  202.     HTMLRemoveTags(Line);
  203.     SetField(fieldProducer, Line);
  204.     end
  205.  
  206.   // Critica
  207.   LineNr := FindLine('Critica', Page, LineNr);
  208.   if LineNr <> -1 then
  209.     begin
  210.     Line := Page.GetString(LineNr+11);
  211.     HTMLRemoveTags(Line);
  212.     SetField(fieldComments, Line);
  213.     end
  214.  
  215.   if pos('<b>Titolo Originale: </b>', Line) = 1 then
  216.      begin
  217.      HTMLRemoveTags(Line);
  218.      Delete(Line, 1, 18);
  219.      SetField(fieldOriginalTitle, Line);
  220.      end
  221.    else if pos('alt="Immagine"', Line) <> 0 then
  222.      begin
  223.      Delete(Line, 1, pos('<img ', Line) + 10);
  224.      Delete(Line, pos('" width=', Line), pos('>', Line) + 1);
  225.      GetPicture(Line);
  226.      end
  227.  
  228.   //DisplayResults;
  229.   end;
  230.  
  231. end;
  232.  
  233. // ---
  234.  
  235. procedure AddMoviesTitles(Page: TStringList);
  236. var
  237.   LineNr: Integer;
  238.   NewLineNr: Integer;
  239.   Line: string;
  240.   MovieTitle, MovieAddress: string;
  241.   BeginPos, EndPos: Integer;
  242.  
  243. begin
  244. TheMovieAddress := '*';
  245. LineNr := 0;
  246. LineNr := FindLine('<font face=arial,helvetica><b>Risulati Film</b>',Page,LineNr);
  247. LineNr := LineNr + 3;
  248.  
  249. PickTreeAdd('Risultati ricerca per "' + MovieName + '":', '');
  250.  
  251. while LineNr > 2 do
  252. begin
  253.   Line := Page.GetString(LineNr);
  254.   BeginPos := pos('<li><b><a href="',Line)+16;
  255.   EndPos := pos('">',Line);
  256.   MovieAddress := copy(Line,BeginPos,EndPos-BeginPos);
  257.   Delete(Line,1,EndPos + 1);
  258.   BeginPos := 1;
  259.   EndPos := -1;
  260.   MovieTitle := Line;
  261.   HTMLRemoveTags(MovieTitle);
  262.   HTMLDecode(Movietitle);
  263.   PickTreeAdd(MovieTitle, MovieAddress);
  264.  
  265.   NewLineNr := FindLine('<li><b><a href="',Page,LineNr+1);
  266.   if NewLineNr <> (LineNr + 1) then
  267.    LineNr := 2
  268.   else
  269.    LineNr := NewLineNr;
  270.  
  271.   if TheMovieAddress='*' then
  272.    TheMovieAddress := MovieAddress
  273.   else
  274.    TheMovieAddress := '';
  275. end;
  276. if TheMovieAddress='*' then TheMovieAddress := '';
  277. end;
  278.  
  279. // main
  280.  
  281. begin
  282. if CheckVersion(3,5,0) then
  283. begin
  284.   MovieName := GetField(fieldOriginalTitle);
  285.   if MovieName = '' then
  286.    MovieName := GetField(fieldTranslatedTitle);
  287.   if Input('Yahoo!Cinema Import', 'Inserire il titolo del film:', MovieName) then
  288.   begin
  289.    AnalyzePage('http://it.search.movies.yahoo.com/search/movies_db_it?mt='+UrlEncode(MovieName));
  290.   end;
  291. end
  292. else
  293.   ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
  294. end.
  295.